1
精確度管理與溢位處理
AI018Lesson 3
00:00

在 NumPy 中, 精確度管理 是刻意選擇位元深度以平衡記憶體效率與數值正確性的做法。與具有任意精度的標準 Python 整數不同,NumPy 使用固定大小的 C 類型(例如, int32_tuint64_t)。

1. 資料型態層級

NumPy 的資料型態定義了記憶體佔用空間。雖然 np.int_() 會根據平台提供不同的大小,但穩健的系統則依賴於 固定大小別名 (第 34 頁表格)來確保跨硬體的一致性。

  • 整數:int8_tint16_tint32_tint64_t
  • 無符號:uint8_tuint64_t
  • 指標:intptr_tuintptr_t

2. 採查工具

執行算術運算前,請使用 np.iinfo()np.finfo() 來檢視範圍界限。例如, 1 + np.finfo(np.longdouble).eps 可識別機器浮點數的最小單位——即加法不再改變數值的臨界值。

整數溢位迴圈邏輯最大值 + 1 — 最小值浮點數飽和邏輯超過最大值 — inf

3. 溢位的運作原理

NumPy 在溢位時不會拋出錯誤;而是靜默失敗。使用 np.power(100, 8, dtype=np.int32) 會導致截斷,而 float64 則會轉為 inf。請使用 np.issubdtype(d, np.floating) 在操作前驗證資料類型是否為浮點數。

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>